MSSQL Met vallen en opstaan
Home

MSSQL Met vallen en opstaan

MSSQL Met vallen en opstaan

Database ontwikkeling gebeurt meestal met vallen en opstaan. Het is zelden dat het database ontwerp van de eerste keer goed is. Daarom is het nodig goed overweg te kunnen met het DROP en ALTER statement.
  1. Agile ultra light

    Als je tabellen maakt en uittest volg je meestal het volgende patroon:

    1. CREATE en dan testen:
      Eerst maak je de tabel en dan test je die met een paar INSERT’s, UPDATE’s, DELETE’s en SELECT’s. Als de tabel goed is ontworpen kan je die onmiddellijk gebruiken. Maar in het gewone leven is dat maar zelden zo…
    2. CREATE en dan testen, ALTER en dan testen, ALTER en opnieuw testen:
      meestal is het nodig om achteraf nog wijzigingen aan te brengen.
    3. CREATE en testen, ALTER en testen en dan DROP, CREATE en opnieuw testen:
      nadat je een tabel een paar keer hebt gewijzigd of omdat de tabel niet goed gemaakt was besluit je om van nul af te herbeginnen. Je wil de tabel verwijderen en je DLL wijzigen. Als je al de statements na de prompt hebt ingetypt mag je helemaal opnieuw beginnen. Het is een goed idee om je statements vanaf het begin op te slaan in wat we SQL scripts noemen. Dat zijn gewone tekstbestanden met de extensie sql die je in kladblok kan aanmaken, opslaan en weer openen. Als je Microsoft SQL Server Management Studio gebruikt heb je een handige tekstverwerker ter je beschikking om je scripts te maken.
  2. Scripts vs Visual Editor

    Het is handiger om in dit opzicht met scripts te werken.

  3. Scripts maken in Microsoft SQL Server Management Studio
    1. Typ de statements in in de editor.
    2. Selecteer Save of Save As in het File menu en type de naam in van het sql bestand.
    3. Klik op Execute om het script uit te voeren.
    4. Als je het bestand opnieuw wil openen selecteer je Open en dan File in het File menu.
    Scripts maken in Microsoft SQL Server Management Studio
    Scripts maken in Microsoft SQL Server Management Studio
  4. Een voorbeeld van vallen en opstaan

    We hebben onze tabel boeken gecreëerd. We hebben er boeken aan toegevoegd. En op een bepaald ogenblik merk je op dat je de mogelijkheid om de boeken te classificeren niet hebt voorzien. Je kan de script om de tabel te creëren wijzigen, de kolom van de categorie toevoegen en de script opnieuw uitvoeren. Maar dan worden alle gegevens die al in de tabel zitten verwijderd. I.p.v. de tabel opnieuw te creëren kan je het ALTER statement gebruiken om de structuur van de tabel te wijzigen zonder dat de gegevens vernietigd worden.

    Klassificatie is een wetenschap op zich. Je zou kunnen kiezen om een eigen klassificatiesysteem uit te dokteren. Maar waarom zou je het warm water opnieuw uitvinden. De Nederlandse basisklassificatie[1] is ontwikkeld door bibliotheken uit Nederland. Er bestaan ook nog andere klassificatiesystemen zoals UDC[2] (Universele Decimale Classificatie) en SISO (Schema voor de Indeling van de Systematische catalogus in Openbare bibliotheken). Het NBK is eenvoudig, het UDC word het meest gebruikt en SISO wordt in de Openbare Bibliotheken gebruikt maar is moeilijk. Als je een algemeen gebruikt classificatiesysteem gebruikt zijn je boeken ook geordend volgens een standaard klassificatie en zijn de gegevens met bibliotheken uitwisselbaar. We laten de keuze van het klassificatiesysteem over aan de gebruiker en voorzien een kolom van 40 karakters lang.

    De script ziet er dan zo uit:

    use JefInghelbrecht
    go
    alter table Boeken add Categorie varchar(40)
    go

    We slaan de script op in een bestand met de naam BoekenAddCategorie.sql. Op die manier houden we de wijzigingen bij en kunnen we later een nieuwe script maken op basis van de wijzigingen die tijdens het ontwikkelingproces zijn doorgevoerd.

    We voegen een nieuwe rij toe om de wijziging te testen. We openen de BoekenAddRow.sql toe en passen de script aan. De kolom Categorie moet worden toegevoegd. Let erop dat we een nieuw boek toevoegen om geen dubbels te hebben.

    use JefInghelbrecht
    insert into boeken
       (Id,
       Voornaam,
       Familienaam,
       Titel,
       Stad,
       Uitgeverij,
       Verschijningsdatum,
       Herdruk,
       Commentaar,
       Categorie)
    values ( 
       'Philipp', 
       'Blom', 
       'Wat op het spel staat', 
       'Amsterdam', 
       'De Bezige Bij', 
       '2017', 
       '', 
       'De Duitse historicus en journalist schetst een somber toekomstscenario. ', 
       'Essai' 
    ) 

    Later zullen we zien hoe je het vermijden van dubbels in SQL programmeert.

    Je kan de volledige lijst met categorieën vinden op https://www.kb.nl/sites/default/files/docs/bc04.pdf

    De officiële website van UDC in het Nederlands: http://www.udcc.org/.

  5. Oefening

    We voegen de kolom met de naam Categorie toe.

    -- ji
    
    -- 27 november 2012 
    -- Voeg de kolom Categorie toe aan de tabel 
    -- Bestandsnaam: BoekenAlterCategorieAdd.sql 
    -- Boeken 
    use JefInghelbrecht 
    go 
    alter table Boeken add Categorie nvarchar(40) 
    go 

    Sla dit script op in een sql bestand met de naam BoekenAlterCategorieAdd.sql.

  6. Oefening

    We stellen vast dat de lengte van de kolom Categorie te kort is. We willen die langer maken:

    -- ji 
    -- 27 november 2012 
    -- Bestandsnaam: BoekenAlterCategorieAlter.sql 
    -- 
    use JefInghelbrecht 
    go 
    alter table Boeken alter column Categorie nvarchar(120) 
    go

    Sla dit script op in een sql bestand met de naam BoekenAlterCategorieAlter.sql.

  7. Opdracht

    Een InsertedBy kolom toevoegen

    Het is handig om bij te houden wie het boek heeft geïnserted. Daarom willen we een extra kolom met de naam InsertedBy die 255 karakters lang is en nationale karakters moet kunnen bevatten.

    Schrijf een script die de kolom InsertedBy toevoegt.

    Sla de script op in een bestand met de naam BoekenAlterInsertedByAdd.sql.

JI
2020-01-18 14:37:15